今天鐵人競賽第4天,之前介紹了Python的基本資料型別,Boolean、Int、Float、String。接下來要來介紹序列結構(list、tuple、字典),用來表達一系列的項目。
串列:由零或多個元素組成的,以「,」逗號分隔,並且放在[]
裡面。
語法:[element1,element2.....]
以下示範建立基本的串列結構,和如何取值
ironman_list = ["中信兄弟", "統一獅", "lamigo", "富邦悍將"]
print('總冠軍隊伍', ironman_list[0])
print('亞軍隊伍', ironman_list[-2])
# 輸出結果
總冠軍隊伍 中信兄弟
亞軍隊伍 lamigo
ironman_list1 = range(5)
ironman_list2 = range(3,8)
ironman_list3 = range(3,8,2)
print(list(ironman_list1))
print(list(ironman_list2))
print(list(ironman_list3))
# 輸出結果
[0, 1, 2, 3, 4]
[3, 4, 5, 6, 7]
[3, 5, 7]
串列重複
解釋:串列重複n次
語法:[list]*n 串列重複n次
ironman_list1 = [1,2,3,4,5,6]
ironman_list2 = ironman_list1*2
print(ironman_list2)
# 輸出結果
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
切片取值
解釋:串列取值的方式除了可以使用index取得單一值,也可以使用切片的方式取得多個值
語法:[n,m] 取出index n~(m-1)的元素
ironman_list1 = [1,2,3,4,5,6]
print(list(ironman_list1[2:5]))
# 輸出結果
[3, 4, 5]
切片取值也可設定間格,語法如下
語法:[n,m,o] 取出index n~(m-1)的元素,間隔為o
ironman_list1 = [1,2,3,4,5,6]
print(list(ironman_list1[1:4:2]))
# 輸出結果
[2, 4]
刪除元素
語法:del
以下示範用切片的方式刪除元素
ironman_list1 = [1,2,3,4,5,6]
del ironman_list1[1:4]
print(list(ironman_list1))
# 輸出結果
[1, 5, 6]
串列預設函數
ironman_list1 = [1,2,3,4,5,6]
print('串列元素數目----->',len(ironman_list1))
print('串列元素最小值--->',min(ironman_list1))
print('串列元素最大值--->',max(ironman_list1))
# 輸出結果
串列元素數目-----> 6
串列元素最小值---> 1
串列元素最大值---> 6
如果想取得某個元素在串列中的操作可以使用以下函數
ironman_list1 = [1,2,3,4,3,6,3]
print('元素3第一次出現的位置------>',ironman_list1.index(3))
print('元素在串列中出現的次數----->',ironman_list1.count(3))
# 輸出結果
元素3第一次出現的位置------> 2
元素在串列中出現的次數-----> 3
在list中加入元素
ironman_list1 = [1,2,3,4,5,6]
ironman_list1.append(8)
print('將8做為元素加在list最後---->',list(ironman_list1))
ironman_list1 = [1,2,3,4,5,6]
ironman_list1.extend([8,9])
print('將[8,9]中的元素加在list最後---->',list(ironman_list1))
ironman_list1 = [1,2,3,4,5,6]
ironman_list1.insert(3,8)
print('在index 3的位置加入元素8---->',list(ironman_list1))
# 輸出結果
將8做為元素加在list最後----> [1, 2, 3, 4, 5, 6, 8]
將[8,9]中的元素加在list最後----> [1, 2, 3, 4, 5, 6, 8, 9]
在index 3的位置加入元素8----> [1, 2, 3, 8, 4, 5, 6]
移除串列的元素
ironman_list1 = [1,2,3,4,5,6]
n = ironman_list1.pop()
print('取出list最後一個元素並且移除---->',n)
ironman_list1 = [2,3,4,5,6]
ironman_list1.remove(3)
print('移除第一次出現3的元素---->',list(ironman_list1))
# 輸出結果
取出list最後一個元素並且移除----> 6
移除第一次出現3的元素----> [2, 4, 5, 6]
其他串列函數操作
ironman_list1 = [2,5,6,3,4]
ironman_list1.reverse()
print('反轉list順序---->',list(ironman_list1))
ironman_list1 = [3,2,5,7,4]
ironman_list1.sort()
print('將list從小到大排列---->',list(ironman_list1))
# 輸出結果
反轉list順序----> [4, 3, 6, 5, 2]
將list從小到大排列----> [2, 3, 4, 5, 7]
優點:執行速度比list快,儲存在Tuple的資料比較安全
以下示範建立tuple,不同於list使用[],tuple使用()
ironman_tuple = ("中信兄弟", "統一獅", "lamigo", "富邦悍將")
print('總冠軍隊伍', ironman_tuple[0])
print('亞軍隊伍', ironman_tuple[-2])
# 輸出結果
總冠軍隊伍 中信兄弟
亞軍隊伍 lamigo
ironman_tuple = ("中信兄弟", "統一獅", "lamigo", "富邦悍將")
ironman_list = ["brother","lion","monkey","Guardians"]
tuple_to_list = list(ironman_tuple)
list_to_tuple = tuple(ironman_list)
print(list(tuple_to_list))
print(list(list_to_tuple))
# 輸出結果
['中信兄弟', '統一獅', 'lamigo', '富邦悍將']
['brother', 'lion', 'monkey', 'Guardians']
list和Tuple都是使用數字取得元素值的方式,如果想要用其他key值來取值就可以使用Dict
語法:{key1:value1 [,key2:value2,…]}
以下範例建立一個dict
ironman_dict = {"team":"中信兄弟","year":"2017","ranking":2}
print(ironman_dict["team"])
# 輸出結果
中信兄弟
del ironman_dict["team"] #刪除元素
print(ironman_dict)
ironman_dict.clear() #刪除所有元素
print(ironman_dict)
del ironman_dict # 刪除dict
# 輸出結果
{'year': '2017', 'ranking': 2}
{}
介紹完序列結構,可以使用迴圈的方式來取值,Python有兩種迴圈(for、while),python用縮排和冒號「:」來表示區塊
ironman_list1 = range(0, 5)
for i in ironman_list1:
print(i,end=",")
# 輸出結果
1,2,3,8,4,5,6,
巢狀的for迴圈,這邊示範9*9乘法表
for i in range(1,10):
for j in range(1,10):
product = i * j
print("%d*%d=%-2d " % (i,j, product), end=" ")
print() #斷行
# 輸出結果
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
for i in range(1,11):
if(i==6):
break
print(i, end=",")
# 輸出結果,6之後就不執行
1,2,3,4,5,
現在使用continue看跟break有什麼不同(迴圈執行中途暫時停住不往下執行,而跳到迴圈起始處繼續執行)
for i in range(1,11):
if(i==6):
continue
print(i, end=",")
# 輸出結果,只有6不會執行,>6還會執行
1,2,3,4,5,7,8,9,10,
python在for中還可以使用else,用在當for中的if條件一直不滿足時最後會執行else
下面示範驗證數字是否為質數
n = 5
if(n==2):
print("2是質數!")
else:
for i in range(2,n):
if(n % i == 0):
print("%d 不是質數!" %n)
break
else:
print("%d是質數!" %n)
# 輸出結果
5是質數!
total = n = 0
while(n<10):
n += 1
total += n
print(total)
# 輸出結果
55
發現筆誤喔!
ironman_list1 = range(0, 5)
for i in list1:
print(i,end=",")
list1=>ironman_list1
哇,真的ㄟ,感謝你的回饋~~我立馬改一下
Hi Summer,
找到一個可以建議的地方,就是「Tuple(元組)」第一個建立 tuple 的範例:
ironman_tuple = ("中信兄弟", "統一獅", "lamigo", "富邦悍將")
print('總冠軍隊伍', ironman_tuple[0])
print('亞軍隊伍', ironman_tuple[-2])
因為我看的時候遲疑了一下,改成上面這樣好像好一點 XD
應該是參數忘記改名稱了
介紹Tuple的範例程式碼
為何最後在print出來時又要轉型成list
print(list(tuple_to_list))
print(list(list_to_tuple))
謝謝提醒!確實直接print出來即可
print(tuple_to_list)
print(list_to_tuple)